package real.evaluation.formula;

import real.evaluation.Evaluator;
import real.evaluation.Formula;
import real.lang.RealLangException;
import real.lang.literal.RealBoolean;

public class QuantifiedFormula extends Formula{
private LogicalQuantifier quantifier;
	
	private String variableId;
	
	private CompositeFormulaExpression expression;
	
	/**
	 * @param quantifier the quantifier to set
	 */
	public void setQuantifier(LogicalQuantifier quantifier) {
		this.quantifier = quantifier;
	}

	/**
	 * @return the quantifier
	 */
	public LogicalQuantifier getQuantifier() {
		return quantifier;
	}

	/**
	 * @param variableId the variableId to set
	 */
	public void setVariableId(String variableId) {
		this.variableId = variableId;
	}

	/**
	 * @return the variableId
	 */
	public String getVariableId() {
		return variableId;
	}

	/**
	 * @param expression the predicate to set
	 */
	public void setPredicate(CompositeFormulaExpression expression) {
		this.expression = expression;
	}

	/**
	 * @return the expression
	 */
	public CompositeFormulaExpression getExpression() {
		return expression;
	}
	
	@Override
	protected RealBoolean ProperEvaluate(Evaluator eval)
			throws RealLangException {
		// TODO bind variable in evaluator
		// call predicate evaluation
		
		// TODO inset construction
		return null;
	}
}
